Writing
Streams to a File
You can also
create a file containing data streams by writing a new data stream to a file.
You can
create a new stream in a new or existing file by using the AVIFileCreateStream function. This function
defines a new stream according to the characteristics described in an AVISTREAMINFO structure, creates a stream
interface for the new stream, increments the reference count of the stream, and
returns the address of the stream-interface pointer.
Before you
write the content of the stream, you must specify the stream format. You can
set the stream format by using the AVIStreamSetFormat function. When setting the
format of a video stream, you must supply this function with a BITMAPINFO structure containing the
appropriate information. When setting the format of an audio stream, you must
supply a WAVEFORMAT
or WAVEFORMATEX
structure containing the appropriate information. The information you need to
supply to the function for other stream types depends on the stream type and
the stream handler.
You can write
the multimedia content in a stream by using the AVIStreamWrite function. This function
copies raw data from an application-supplied buffer into the specified stream.
The default AVI file handler appends information to the end of a stream. The
default WAVE handler can write waveform-audio data within a stream as well as
at the end of a stream.
You can write
supplementary information about the file or stream that is not included in the AVIFileCreateStream
or AVIStreamSetFormat function by using the AVIFileWriteData and AVIStreamWriteData functions. You can record
data that is applicable to the entire file, such as copyright information and
modification history, by using AVIFileWriteData. You can record
stream-specific information, such as compression and decompression settings, by
using AVIStreamWriteData. The supplementary information is stored in
separate chunks within the file.
You can close
the stream after you finish writing to the new stream by using the AVIStreamRelease function. This function
clears buffers used in recording the stream data, and it completes and closes
any incomplete data chunks in the file.